package cofee
import org.codehaus.groovy.grails.commons.*

class ArquivoService {

	static transactional = true
	static scope = "singleton"
	def configuracao = new Configuracao()

	def arquivar(def msg){
		println "Entrando no metodo para Arquivar msg : ${msg}"
		msg.each {
			String texto = it.toString()
			println "Splitando o  texto : ${texto}"
			def linhas = texto.split("\\\n")

			linhas.each{
				def linha = it.split("\\|");
				def pedido = new Pedido();
				println "Linha : ${linha}"
				println "Quantidade de Coluna : ${linha.size()}"
				println "Linhas:"
	
				if (linha[0]?.trim() == "C"){
					if(linha.size()>=37){
						pedido = populaPedido(linha)
					}else{
						println "Erro ao inserir a linha: ${linha} "
					}
				}else{
					if(linha.size()>=36){
						populaItem(linha, pedido)
					}else{
						println "Erro ao inserir a linha: ${linha} "
					}
				}
				println "Salvado.. e proximo!"
			}
		}
	}


	def populaPedido = { linha->
		println "Populando pedido"

		def pedido = new Pedido();

		pedido.coluna1 = linha[0];
		pedido.coluna2 = linha[1];
		pedido.coluna3 = linha[2];
		pedido.coluna4 = linha[3];
		pedido.coluna5 = linha[4];
		pedido.coluna6 = linha[5];
		pedido.coluna7 = linha[6];
		pedido.coluna8 = linha[7];
		pedido.coluna9 = linha[8];
		pedido.coluna10 = linha[9];
		pedido.coluna11 = linha[10];
		pedido.coluna12 = linha[11];
		pedido.coluna13 = linha[12];
		pedido.coluna14 = linha[13];
		pedido.coluna15 = linha[14];
		pedido.coluna16 = linha[15];
		pedido.coluna17 = linha[16];
		pedido.coluna18 = linha[17];
		pedido.coluna19 = linha[18];
		pedido.coluna20 = linha[19];
		pedido.coluna21 = linha[20];
		pedido.coluna22 = linha[21];
		pedido.coluna23 = linha[22];
		pedido.coluna24 = linha[23];
		pedido.coluna25 = linha[24];
		pedido.coluna26 = linha[25];
		pedido.coluna27 = linha[26];
		pedido.coluna28 = linha[27];
		pedido.coluna29 = linha[28];
		pedido.coluna30 = linha[29];
		pedido.coluna31 = linha[30];
		pedido.coluna32 = linha[31];
		pedido.coluna33 = linha[32];
		pedido.coluna34 = linha[33];
		pedido.coluna35 = linha[34];
		pedido.coluna36 = linha[35];
		pedido.coluna37 = linha[36];

		println "Antes de salvar Pedido"
		pedido.save();
		
		return pedido;
	}

	def populaItem = { linha,pedido ->
		println "Populando item"

		def item = new Item();

		item.coluna1 = linha[0];
		item.coluna2 = linha[1];
		item.coluna3 = linha[2];
		item.coluna4 = linha[3];
		item.coluna5 = linha[4];
		item.coluna6 = linha[5];
		item.coluna7 = linha[6];
		item.coluna8 = linha[7];
		item.coluna9 = linha[8];
		item.coluna10 = linha[9];
		item.coluna11 = linha[10];
		item.coluna12 = linha[11];
		item.coluna13 = linha[12];
		item.coluna14 = linha[13];
		item.coluna15 = linha[14];
		item.coluna16 = linha[15];
		item.coluna17 = linha[16];
		item.coluna18 = linha[17];
		item.coluna19 = linha[18];
		item.coluna20 = linha[19];
		item.coluna21 = linha[20];
		item.coluna22 = linha[21];
		item.coluna23 = linha[22];
		item.coluna24 = linha[23];
		item.coluna25 = linha[24];
		item.coluna26 = linha[25];
		item.coluna27 = linha[26];
		item.coluna28 = linha[27];
		item.coluna29 = linha[28];
		item.coluna30 = linha[29];
		item.coluna31 = linha[30];
		item.coluna32 = linha[31];
		item.coluna33 = linha[32];
		item.coluna34 = linha[33];
		item.coluna35 = linha[34];
		item.coluna36 = linha[35];
		pedido = Pedido.get(0)
		item.pedido = pedido;
		println "Antes de salvar Item"
		
		if (pedido?.itens?.size()>0){
			pedido.itens+= item;
		}else{
			pedido.itens = new ArrayList();
			pedido.itens+= item;
		}
		
		pedido.save()
		item.save();
	}
	def configura = { config ->
		this.configuracao = config;
	}
}
